/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package redinftel.formularios;

import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.mail.Message;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpSession;
import redinftel.entidades.Usuario;
import redinftel.sesiones.UsuarioFacadeRemote;

/**
 *
 * @author Six Degrees Team
 */
@ManagedBean
@RequestScoped
public class BaixaBean {

    @EJB
    private UsuarioFacadeRemote usuarioFacade;
    private static final String USUARIO = "usuario";

    /** Creates a new instance of BaixaBean */
    public BaixaBean() {
        ChangeLocaleBean.cambiar();
    }

    /**
     *
     * @return redirige a la pagina index
     * Se obtiene el usuario de la sesion se le envia el mensaje
     * junto al asunto,y el link a donde se tiene que redirigir para relaizar la baja
     *
     */
    public String doBaja() {

        FacesContext con = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) con.getExternalContext().getSession(true);
        Usuario us = new Usuario((Usuario) session.getAttribute(USUARIO));
        String mensaje="Hola \nEstimado/a " + us.getPerfil().getNombre() + ". Para darse de baja entre"
                + " a http://localhost:8080/redinftel-war/faces/borrar.jsp"
                + " e introduzca su codigo de validacion: " + us.getCodigoValidacion();
        try {
            enviarEmail(us,mensaje,"Baja en Red Social");
        } catch (MessagingException ex) {
            Logger.getLogger(BaixaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        session.invalidate();

        return "index";

    }
/**
 *
 * @return se redirige a la pagina index
 * despues de mandar por correo el link a donde se tiene que dirigir el usuario
 * para desactivar su cuenta
 */
    public String doDesactivar() {
        FacesContext con = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) con.getExternalContext().getSession(true);
        Usuario us = new Usuario((Usuario) session.getAttribute(USUARIO));
        String mensaje="Hola \nEstimado/a " + us.getPerfil().getNombre() + ". Para desactivar su cuenta entre"
                + " a http://localhost:8080/redinftel-war/faces/desactivar.jsp"
                + " e introduzca su codigo de validacion: " + us.getCodigoValidacion();

        try {
            enviarEmail(us,mensaje,"Desactivacion red social");
        } catch (MessagingException ex) {
            Logger.getLogger(BaixaBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        session.invalidate();

        return "index";

    }
/**
 *
 * @param usuario
 * @param mensaje
 * @param asunto
 * @throws MessagingException
 * metodo void para enviar el emial al usuario junto al asunto
 */
    public void enviarEmail(Usuario usuario,String mensaje,String asunto) throws MessagingException {
        Properties props = new Properties();
        props.setProperty("mail.smtp.host", "smtp.gmail.com");
        props.setProperty("mail.smtp.starttls.enable", "true");
        props.setProperty("mail.smtp.port", "587");
        props.setProperty("mail.smtp.user", "red.sixdegrees@gmail.com");
        props.setProperty("mail.smtp.auth", "true");

        Session session = Session.getDefaultInstance(props);
        session.setDebug(true);

        MimeMessage message = new MimeMessage(session);

        message.setFrom(new InternetAddress("red.sixdegrees@gmail.com"));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(usuario.getEmail()));
        message.setSubject(asunto);
        message.setText(mensaje);

        Transport t = session.getTransport("smtp");
        t.connect("red.sixdegrees@gmail.com", "redsocial");
        t.sendMessage(message, message.getAllRecipients());
        t.close();

    }
}
